/*
 * Gait.h
 *
 *  Created on: Feb 19, 2011
 *      Author: Anton
 */

#ifndef GAIT_H_
#define GAIT_H_

#include "Robot.h"
#include "Leg.h"
#include "Link.h"
#include "Matrix.h"
#include <cmath>
#include <iostream>
#include <fstream>
#include <sstream>

using std::endl;
using std::cout;

class Gait {
public:
	Gait(Robot* RBE, int gaitnum, double setspeed);
	virtual ~Gait();
    int getDuty() const;
    double getHeight() const;
    double getLegmax() const;
    double getLength() const;
    int getOffset0() const;
    int getOffset1() const;
    int getOffset2() const;
    int getOffset3() const;
    int getOffset4() const;
    int getType() const;
    bool getWalking() const;
    double getWidth() const;
    double getSpeedWait() const;
    void setSpeedWait(double sw);
    void setDuty(int duty);
    void setHeight(double height);
    void setLegmax(double legmax);
    void setLength(double length);
    void setOffset0(int offset0);
    void setOffset1(int offset1);
    void setOffset2(int offset2);
    void setOffset3(int offset3);
    void setOffset4(int offset4);
    void setType(int type);
    void setWalking(bool walking);
    void setWidth(double width);
    double getSpeed() const;
    void setSpeed(double speed);
    void printInfo();
    int getGaitmotion() const;
    void setGaitmotion(int gaitmotion);
    void calculateGait();
    Robot* rbe;
    Robot* getRobot(){ return rbe; }
    void printDesiredPositions();
    void logDesiredPositions();
    int getLogbool() const;
    void setLogbool(int logbool);

private:
    int logbool;
    int gaitmotion;
	double height;
	double width;
	double length;
	int type;
	double legmax;
	int offset0;
	int offset1;
	int offset2;
	int offset3;
	int offset4;
	int duty;
	double speedwait;
	double speed;
	bool walking;
};

#endif /* GAIT_H_ */
